Skip to content

mushroomsir/tcc

Repository files navigation

TCC

License GoDoc

TCC 基于本地消息表的分布式事务处理

Design

  1. 介绍分布式系统中的事务问题
  2. TCC 异步补偿的设计与实现(TODO)

Usage

go get github.com/mushroomsir/tcc

Create transaction table by sql/mysql.sql.

Demo

func main() {
	tc := tcc.New(&tcc.Option{
		PullTaskInterval: 1,
		Store:            store.NewMysql(&gorm.DB{}),
	})

	tx := tc.NewTransaction("name")
	sql := tx.TryPlan("value")

	err := doSomeThing(sql)

	if err != nil {
		tx.Confirm() // confirm to summit async compensation task
	} else {
		tx.Cancel() // cancel async compensation task
	}
}

func doSomeThing(sql string) error {
    // execute sql in transaction 
	return nil
}

About

基于本地消息表的分布式事务处理

Resources

License

Stars

Watchers

Forks

Packages

No packages published